// state相当于data 存放共享的数据的
const state = {
  // count: 1,
  cartGoods: []
}
//此处相当于计算属性,
const getters = {
  max(state){
    return state.cartGoods.reduce((sum,item)=>{
        if(item.checked){
            sum += item.count*item.monay
        }
        return sum
    },0)
},
  // max(state) {
  //   var maxManoy = 0
  //   for (var i = 0; i < state.cartGoods.length; i++) {
  //     if(state.cartGoods[i].checked === true){
  //       // console.log(state.cartGoods)
  //       maxManoy += state.cartGoods[i].count * state.cartGoods[i].monay
  //     }
      
  //   }
  //   return maxManoy
  // },

  //在这里添加数组的其他属性
  buyList(state, getters, rootState, rootGetters) {

    return state.cartGoods.map(item => {
      //rootState 就是modules下边的两个js,可以直接访问
      //如果cart的数组和goodsdetaul的数组id相同(因为一开始push了一个ID进去,将两个进行合并)
      var pItem = rootState.goodsDetaul.goodsList.find(obj => obj.id == item.id);
      //合并数组,将pitem合并到item中.并返回item
      Object.assign(item, pItem);
      //总价
      // item.total = item.count * item.monay
      console.log("购物车数量",item.count)
      return item; // 合并后的结果
    })
  }
}
//此处操作(修改)state属性的 写方法
const mutations = {
  

  //购物车的数量+-
  getPulsGoods(state, id) {
    var objPuls = state.cartGoods.find(item => item.id === id)
    if (objPuls.count<objPuls.stock) {
      objPuls.count++
      console.log(objPuls.stock)
      objPuls.stock--
    }

  },
  minusGoods(state, id) {
    var objPuls = state.cartGoods.find(item => item.id === id)
    if (objPuls.count > 0) {
      objPuls.count--
      objPuls.stock++
    }
  },
  //id从外边传进来的,也就是要加入购物车的商品id
  //点击加入购物车,此处因为数据太多,只传递一个id和数量,在上边添加其他属性
  insBuy(state, {id,count}) {
    if (!state.cartGoods.some(item => item.id === id)) {
      state.cartGoods.push({
        //如果没有这个id 则push一个id进去 并且数量为1
        id,
        count
        // count: 1,
      })
    } else {
      //如果有不重复添加,直接数量+1
      var item = state.cartGoods.find(item => item.id === id);
      // 多少件
      // console.log("shuliang",shuliang,"item",item.shuliang)
      item.count = item.count+ count
      console.log("item.shuliang",item.count)
      // item.shuliang += shuliang
    }
  }
}

//用于异步操作,可以调用mutations的方法,从而修改state
const actions = {
  addBuy({
    disptch,
    commit,
    getters,
    rootGetters
  }, {id,count}) {

    console.log(111)
    //修改库存
    // commit("goodsDetaul/modStock", id, {
    //   //跨module修改数据,需要加 root: true
    //   root: true //跨module
    // })
    commit("insBuy", {id,count})
  }
}
export default {
  // 命名空间 用于区分不同的modules
  namespaced: true,
  state,
  getters,
  mutations,
  actions
}